자바 오버로딩

IT 위키

자바 오버로딩(Java Overloading, 過載定義)은 같은 이름의 메서드를 매개변수의 개수, 타입 또는 순서를 다르게 하여 여러 개 정의하는 객체 지향 프로그래밍 기법이다.

1 개요[편집 | 원본 편집]

오버로딩은 메서드 이름의 재사용을 가능하게 하며, 호출되는 메서드는 컴파일 타임에 결정된다. 주로 생성자 또는 기능은 유사하지만 입력 값이 다른 메서드를 구현할 때 사용된다.

2 오버로딩의 조건[편집 | 원본 편집]

  • 메서드 이름은 같아야 함
  • 매개변수의 개수나 타입, 순서가 달라야 함
  • 반환형만 다르고 매개변수가 동일하면 오버로딩 불가능

3 예제[편집 | 원본 편집]

다음은 오버로딩의 기본 예제이다.

public class Calculator {

    // 정수 덧셈
    int add(int a, int b) {
        return a + b;
    }

    // 실수 덧셈
    double add(double a, double b) {
        return a + b;
    }

    // 정수 3개 덧셈
    int add(int a, int b, int c) {
        return a + b + c;
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();
        System.out.println(calc.add(2, 3));          // 출력: 5
        System.out.println(calc.add(2.5, 3.5));      // 출력: 6.0
        System.out.println(calc.add(1, 2, 3));       // 출력: 6
    }
}

4 생성자 오버로딩[편집 | 원본 편집]

생성자도 오버로딩할 수 있으며, 객체를 다양한 방법으로 초기화하는 데 활용된다.

public class Person {
    String name;
    int age;

    public Person() {
        this.name = "이름없음";
        this.age = 0;
    }

    public Person(String name) {
        this.name = name;
        this.age = 0;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

5 오버로딩과 오버라이딩의 차이[편집 | 원본 편집]

  • 오버로딩: 같은 클래스 내에서 메서드 이름은 같고 매개변수가 다름 (정적 다형성)
  • 오버라이딩: 상속 관계에서 상위 클래스의 메서드를 하위 클래스가 재정의 (동적 다형성)

6 주의 사항[편집 | 원본 편집]

  • 반환형이 다르기만 한 경우는 오버로딩이 아님
  • 자바 컴파일러는 메서드의 시그니처(이름 + 매개변수)로 오버로딩을 판단함
  • 자동 형 변환에 의해 예상치 못한 오버로딩 버전이 호출될 수 있음

7 관련 키워드[편집 | 원본 편집]

  • 정적 다형성
  • 메서드 시그니처
  • 생성자 오버로딩
  • 오버라이딩

8 같이 보기[편집 | 원본 편집]

9 참고 문헌[편집 | 원본 편집]

  • Herbert Schildt, *Java: The Complete Reference*, McGraw-Hill Education, 2021.
  • Kathy Sierra and Bert Bates, *Head First Java*, O'Reilly Media, 2022.

10 각주[편집 | 원본 편집]